package com.imooc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 跨域问题：tomcat默认端口8080 本项目端口8088
 */
@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        //1.添加cors配置信息
        CorsConfiguration config = new CorsConfiguration();
        //添加前端请求的一个地址（相当于调用端） 不建议使用*
        config.addAllowedOrigin("http://localhost:8080");
        config.addAllowedOrigin("http://localhost:9090");
        config.addAllowedOrigin("http://124.70.24.81:8089");
        config.addAllowedOrigin("http://124.70.24.81");
        config.addAllowedOrigin("http://www.mtv.com");
        config.addAllowedOrigin("http://www.mtv.com:8080");
        config.addAllowedOrigin("http://www.music.com");
        config.addAllowedOrigin("http://www.music.com:8080");
        //设置是否发送cookie信息
        //前端也需要设置，axios.defaults.withCredentials = true;这样cookie前后端是可以都拿到
        //axios是前端vue框架里面携带的一个组件，是专门做异步提交到后端
        config.setAllowCredentials(true);
        //设置允许请求的方式
        config.addAllowedMethod("*");
        //设置允许的header
        config.addAllowedHeader("*");

        //2.为url添加映射路径
        UrlBasedCorsConfigurationSource corsSource = new UrlBasedCorsConfigurationSource();
        //表示上面config适用于http://localhost:8080/**的所有路由
        corsSource.registerCorsConfiguration("/**", config);

        //3.返回重新定义好的corsSource
        return new CorsFilter(corsSource);
     }
}
